package sprinter;

import java.util.Set;

import jsprintorbitor.experiment.graph.IGraphAlgorithm;
import jsprintorbitor.experiment.graph.IGraphGenerator;

public interface ISprinter {
	public static enum GraphType {
		VECTOR,
		MATRIX,
		IGRAPH,
		COMPACT,
		COMPACT_NOTSTRUCTED,
	}

	/**
	 * generators from native
	 */
	public IGraphGenerator newEasyRandomGraphGenerator(ISprinter.GraphType graphType);

	public IGraphGenerator newFlowGraphGenerator(GraphType graphType);

	public IGraphGenerator newCostFlowGraphGenerator(GraphType vector);

	/**
	 * algorithms from native
	 */
	public IGraphAlgorithm newBFSGraphTraversalAlgorithm();

	public IGraphAlgorithm newDejkstraAlgorithm(int startVertex);

	public IGraphAlgorithm newDinicAlgorithm(int src, int dest);

	public IGraphAlgorithm newMinCostFlowAlgorithm(int src, int dest);

	public Set<String> getExperimentLabels();

}
